import os  # noqa

from qwen_agent.agents import Assistant
from qwen_agent.gui import WebUI
from qwen_agent.utils.output_beautify import typewriter_print


def init_agent_service():
    """
    初始化并返回一个Qwen3代理服务
    返回:
        Assistant: 配置好的Qwen3代理实例
    """
    llm_cfg = {
        # 大语言模型配置
        "model": "qwen3:8b-q4_k_m",  # 模型名称（需与Ollama中实际名称一致,Ollama list 命令查看模型名）
        "model_server": "http://localhost:11436/v1",  # Ollama API端点地址
        "api_key": "EMPTY",  # API密钥，本地模式使用EMPTY
    }

    tools = [
        # 工具列表配置
        {
            "mcpServers": {
                "fetch": {  # 数据获取服务
                    "type": "sse",  # 使用SSE协议
                    "url": "https://mcp.api-inference.modelscope.net/ca59c23a477c44/sse",  # 服务端点
                }
            }
        },
        {
            "mcpServers": {
                "howtocook-mcp": {  # 菜谱服务
                    "command": "node",  # 使用Node.js运行
                    "args": [
                        "D:\\work\\dev\\mcp-server\\demo\\HowToCook-mcp-master\\build\\index.js"
                    ] 
                }
            }
        },
        "code_interpreter",  # 内置代码解释器工具
    ]
    bot = Assistant(
        llm=llm_cfg,
        function_list=tools,
        name="Qwen3工具调用演示",
        description="这是一个使用Qwen3工具调用的演示程序，欢迎添加和使用你自己的工具！",
    )

    return bot

def app_gui():
    """
    启动图形用户界面(GUI)模式
    提供Web界面与Qwen3代理交互
    """
    bot = init_agent_service()  # 初始化代理

    # 聊天机器人配置
    chatbot_config = {
        "prompt.suggestions": [  # 预设提示建议
            "现在几点？",  # 简单问题示例
            "https://github.com/orgs/QwenLM/repositories 提取此页面的markdown内容，然后绘制柱状图显示star数量",  # 复杂任务示例
        ]
    }

    # 启动Web界面
    WebUI(
        bot,  # 代理实例
        chatbot_config=chatbot_config,  # 聊天配置
    ).run()


if __name__ == "__main__":
    """
    程序主入口
    默认启动图形用户界面(GUI)
    """
    app_gui()  # 启动GUI应用
